package io.github.tangwan.jdk8.base;

/**
 * 1、该注解只能标记在"有且仅有一个抽象方法"的接口上。
 * 2、JDK8接口中的静态方法和默认方法，都不算是抽象方法。
 * 3、接口默认继承java.lang.Object，所以如果接口显示声明覆盖了Object中方法，那么也不算抽象方法。
 * 4、该注解不是必须的，如果一个接口符合"函数式接口"定义，那么加不加该注解都没有影响。加上该注解能够更好地让编译器进行检查。如果编写的不是函数式接口，但是加上了@FunctionInterface，那么编译器会报错。
 * @author tangwan
 * @version V1.0
 * created on 2021/10/20 14:57
 * @since JDK 1.8
 */
@FunctionalInterface
public interface FuctionInterface2 {

    String run(String msg);

    default String run1(){
        return "FuctionInterface2 run1";
    }

    default String run2(){
        return "FuctionInterface2 run2";
    }

    default String run3(){
        return "FuctionInterface2 run3";
    }

    static void staticM(){
        System.out.println("FuctionInterface2 staticM");
    }

}
